SimCLR框架解析

您所在的位置:网站首页 activate sim SimCLR框架解析

SimCLR框架解析

2023-06-30 23:13| 来源: 网络整理| 查看: 265

文章目录 前言机器要怎么做才能学习?simCLR 框架简介simCLR的步骤1. 准备数据集,假设有一个很多很多很多图片的数据集2. 数据增强(Data augmentation)3. 一个batch = 2图片组,增强后得到4张图片。4. 通过encoder得到图片表示5. 映射图片(Projection Head)6. 调试模型(tuning model)6.1 计算余弦相似度6.2 计算损失(loss calculation) Downstream tasks结论References

前言

对比学习来自于一个朴素的想法,想像一下我们找出最像猫的照片的过程 请添加图片描述 看一眼猫,对比找出哪个最类似,最后做出判断 在这里插入图片描述 通过这个简单思想的启发,有人提出了”对比学习“的概念 大佬们想把机器训练成可以识别相似与或者不相似的图片: 在这里插入图片描述

机器要怎么做才能学习?

与目标相似/不相似的图片 在这里插入图片描述

图片的表示方式 在这里插入图片描述

能够判断两幅图片的相似程度 在这里插入图片描述

simCLR 框架简介

Self-supervised learning implemented by contrastive learning 在这里插入图片描述 框架流程简介:

输入一张图片(e.g. cat)对图片随机变换,生成两张增强的图片得到图片增强后的数据表示 x i , x j x_i, x_j xi​,xj​通过 encoder 得到 image representation h i , h j h_i, h_j hi​,hj​再通过non-linear全连接层的到数据的表示 z i , z j z_i, z_j zi​,zj​最终目标是最大化 z i , z j z_i, z_j zi​,zj​的相似度 simCLR的步骤 1. 准备数据集,假设有一个很多很多很多图片的数据集

在这里插入图片描述

2. 数据增强(Data augmentation) 举个例子,从数据集中,分组,两张图片为一组(Batch size = 2) 论文实现中,Batch size = 8192. 在这里插入图片描述构造函数对图片进行“增强”,比如随机裁剪(crop),翻转(flip),颜色抖动(color jitter),调整灰度(grayscale)。

r a n d o m ( c r o p + f l i p + c o l o r j i t t e r + g r a y s c a l e ) random (crop + flip + color jitter + grayscale) random(crop+flip+colorjitter+grayscale)

效果如下: 在这里插入图片描述

3. 一个batch = 2图片组,增强后得到4张图片。

B a t c h   s i z e ∗ 2 Batch \ size * 2 Batch size∗2

效果如下: 在这里插入图片描述

4. 通过encoder得到图片表示

(Find image representation based on encoder) 在这里插入图片描述 读者可能好奇encoder是什么,论文用ResNet-50结构作为卷积网络encoder,得到一个1*2048的表示: 在这里插入图片描述

5. 映射图片(Projection Head)

上面我们得到图片的增强表示 h i , h j h_i, h_j hi​,hj​, 然后经过一系列非线性的Dense-Relu-Dense层,最后又把图片映射表示为 z i , z j z_i, z_j zi​,zj​. 在这里插入图片描述

6. 调试模型(tuning model)

别忘了我们上文batch size = 2, 也就是说, 最后生成了4个向量 z 1 , z 2 , z 3 , z 4 z_1, z_2, z_3, z_4 z1​,z2​,z3​,z4​. 接下来我们要计算图片经过一系列编码器,图片变换之后的的损失(loss)。

在这里插入图片描述

6.1 计算余弦相似度

原理很简单, c o s < x , y > = x ∗ y ∣ ∣ x ∣ ∣ ∗ ∣ ∣ y ∣ ∣ cos = {\frac{x*y}{||x|| * ||y||}} cos=∣∣x∣∣∗∣∣y∣∣x∗y​ 在这里插入图片描述 注意,这里的 τ \tau τ 是温度参数(temperature parameter),它可以适当放缩相似度的计算,可以让相似度不限于 [ − 1 , 1 ] [-1, 1] [−1,1]。然后一个batch里面最后得到的4张图片, 两两相似度计算,得到下面的结果: 在这里插入图片描述

6.2 计算损失(loss calculation)

SimCLR使用了一种叫做 NT-Xent loss 的损失函数,全称 Normalised Temperature-Scaled Entropy Loss。该损失函数的原理是:

把增强的图片对取出来: 在这里插入图片描述用Softmax函数去得到图片pair的相似度, 比如: 在这里插入图片描述 第一张图片作为参考,计算另外三张图片,哪个最像? 在这里插入图片描述计算损失函数 (Noise Contrastive Estimation(NCE) Loss) Softmatx取一个负log: 在这里插入图片描述 图片对调换一下,再算一次: 在这里插入图片描述 最后终于。。对所有的图片对(一个图片随机增强变换成的两个图片),取一个平均,得到损失值Loss。 在这里插入图片描述 依据这个Loss,encoder 和 projection head表示可以一步一步地变强。 Downstream tasks

通过上文地对比学习, SimCLR模型训练完成后,该模型可以用于迁移学习。这里主要用训练出地encoder来迁移学习。 在这里插入图片描述

结论

开拓自监督学习地领土,击败一众框架,性能SOTA(STATE-OF-THE-ART)。 在这里插入图片描述

References Paper: ‘A simple framework for constrastive learning’Blog of Amit Chaudhary introducing SimCLR


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3